package com.orange.util;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

/**
 * 上传工具类
 * @author bcb
 *
 */
@Service
public class UploadUtil {

	
	@Autowired
	private AppConfig appConfig;
	
	 /**
     * 文件
     * @param datasFile
     * @return
     * @throws Exception
     */
  	public String uploadFile(MultipartFile datasFile) throws Exception{
  		String returnDatasUrl = null;
  		String datasfile = appConfig.getFilePath();
  		
  		//取得可上传的文件类型  
  		List<String>fileTypes = arrayToList(appConfig.getFileType().split(","));
  		
  		String fileName = datasFile.getOriginalFilename();  
  		//获取上传文件类型的扩展名,先得到.的位置，再截取从.的下一个位置到文件的最后，最后得到扩展名  
  		String ext = fileName.substring(fileName.lastIndexOf(".")+1,fileName.length());  
  		//对扩展名进行小写转换  
  		ext = ext.toLowerCase();  
  		//新的文件名
  		String newFileName = new SimpleDateFormat("yyyyMMddHHmmssms").format(new Date()) + 
  				(int)(Math.random()*10000) + "." + ext;
  		File file = null;
  		if(fileTypes.contains(ext)){
                Calendar cal=Calendar.getInstance();
                int y=cal.get(Calendar.YEAR);
                int m=cal.get(Calendar.MONTH)+1;
                int d=cal.get(Calendar.DATE);
                String pathbig=datasfile+y+"/"+m+"/"+d+"/"+newFileName;
                file=new File(pathbig);
        		if(!file.exists()){
        			file.getParentFile().mkdirs();
        			file.createNewFile();
        		}
  				datasFile.transferTo(file);
  				
  		        returnDatasUrl = appConfig.getProjectAddr()+appConfig.getMappingFile()+y+"/"+m+"/"+d+"/"+newFileName;
  		}else{
  			returnDatasUrl = "22";
  		}
  		return returnDatasUrl;
  	}
     
  	
	 /**
     * 图片
     * @param datasFile
     * @return
     * @throws Exception
     */
  	public String uploadpic(MultipartFile datasFile) throws Exception{
  		String returnDatasUrl = null;
  		String datasfile = appConfig.getPicPath();
  		
  		//取得可上传的文件类型  
  		List<String>picTypes = arrayToList(appConfig.getImageType().split(","));
  		
  		String fileName = datasFile.getOriginalFilename();  
  		//获取上传文件类型的扩展名,先得到.的位置，再截取从.的下一个位置到文件的最后，最后得到扩展名  
  		String ext = fileName.substring(fileName.lastIndexOf(".")+1,fileName.length());  
  		//对扩展名进行小写转换  
  		ext = ext.toLowerCase();  
  		//新的文件名
  		String newFileName = new SimpleDateFormat("yyyyMMddHHmmssms").format(new Date()) + 
  				(int)(Math.random()*10000) + "." + ext;
  		File file = null;
  		if(picTypes.contains(ext)){
                Calendar cal=Calendar.getInstance();
                int y=cal.get(Calendar.YEAR);
                int m=cal.get(Calendar.MONTH)+1;
                int d=cal.get(Calendar.DATE);
                String pathbig=datasfile+y+"/"+m+"/"+d+"/"+newFileName;
                file=new File(pathbig);
        		if(!file.exists()){
        			file.getParentFile().mkdirs();
        			file.createNewFile();
        		}
  				datasFile.transferTo(file);
  				
  		        returnDatasUrl = appConfig.getProjectAddr()+appConfig.getMappingPic()+y+"/"+m+"/"+d+"/"+newFileName;
  		}else{
  			returnDatasUrl = "22";
  		}
  		return returnDatasUrl;
  	}
  	
    private List<String> arrayToList(String[] strs){
    	List<String> list=new ArrayList<String>();
    	if(strs.length>0){
    		for(int a =0;a<strs.length;a++){
    			list.add(strs[a].toString().trim());
    		}
    	}
		return list;
    	
    }
    
    	
}
